package org.patterns.behavior.interpreter;


/**
 * SentenceNode类代表了一个简单的句子结构，作为解释器中的非终结符表达式。
 * 简单句子解释：非终结符表达式
 * 它通过组合方向、动作和距离节点来构建和解释复杂的句子。
 */
public class SentenceNode extends AbstractNode {
    // 方向节点，表示句子中的方向信息
    private AbstractNode direction;
    // 动作节点，表示句子中的动作信息
    private AbstractNode action;
    // 距离节点，表示句子中的距离信息
    private AbstractNode distance;

    /**
     * 构造方法，用于创建SentenceNode对象。
     *
     * @param direction 方向节点，是组成句子的一部分。
     * @param action    动作节点，是组成句子的另一部分。
     * @param distance  距离节点，是组成句子的最后部分。
     */
    public SentenceNode(AbstractNode direction, AbstractNode action, AbstractNode distance) {
        this.direction = direction;
        this.action = action;
        this.distance = distance;
    }

    /**
     * 简单句子的解释操作
     * 它通过调用方向、动作和距离节点的解释方法来组合成整个句子的解释。
     *
     * @return 返回当前句子节点的解释结果，以字符串形式表示。
     */
    public String interpret() {
        StringBuilder sentence = new StringBuilder();
        sentence.append(direction.interpret())
                .append(action.interpret())
                .append(distance.interpret());
        return sentence.toString();
    }
}
